package com.xx.springboot.DataStructure;

/**
 * Created by xiaoxiunique on 2018-7-9.
 */
public class TestArray {

    private int size;
    private int[] data;

    public TestArray(int capacity){
        data = new int[capacity];
        size = 0;
    }

    // 默认构造
    public TestArray(){
        this(10);
    }

    // 在指定位置添加元素
    public void add(int index, int e){
        if (size == data.length){
            new IllegalArgumentException("元素已满");
        }

        if (index < 0 || index > size) {
            new IllegalArgumentException(" 索引超出范围");
        }

        //移动索引右边的元素
        for (int i = size; i > index ; i --) {
            data[i] = data[i - 1];
        }

        data[index] = e;
        size++;
    }

    // 在数组的首位添加元素
    public void addFirst(int e){
        add(0, e);
    }

    // 在数组的末尾添加元素
    public void addLast(int e) {
        add(size, e);
    }

    // 获取得到数组的容量大小
    public int getCapacity(){
        return data.length;
    }

    // 获取得到数组的长度
    public int getSize() {
        return size;
    }

    // 判断数组是否为空
    public boolean isEmpty(){
        return size == 0;
    }
    // 得到指定位置的索引
    public int get(int index){

        if (index < 0 || index > size) {
            new IllegalArgumentException(" 索引超出范围");
        }

        return data[index];
    }

    // 修改指定位置的元素
    public void set(int index, int e) {
        if (index < 0 || index > size) {
            new IllegalArgumentException(" 索引超出范围");
        }

        data[index] = e;
    }

    @Override
    public String toString() {
        StringBuffer res = new StringBuffer();
        res.append("[");
        for (int i = 0; i < size; i++) {
            res.append(data[i]);
            if (i != size - 1) {
                res.append(", ");
            }
        }
        res.append("]");
        return res.toString();
    }

    public static void main(String[] args) {
        TestArray testArray = new TestArray();
        testArray.addLast(1);
        testArray.addLast(1);
        testArray.addLast(1);
        testArray.addLast(1);
        testArray.addLast(1);
        testArray.addLast(1);
        testArray.addLast(1);
        testArray.add(2, 3);
        System.out.println(testArray);
        System.out.println(testArray.getSize());
        System.out.println(testArray.get(testArray.getSize()));
        System.out.println("测试分支开发");

    }


}
